/*
07_1.缓冲区的种类
    1.行缓存：和终端相关的缓冲区就是行缓存(stdin,stdout)
    2.全缓存：和文件相关的缓冲区就是全缓存(fp)
    3.无缓存：标准出错没有缓冲区(stderr)
07_2.缓冲区的大小
    1.行缓存大小是1k
    2.全缓存大小是4k
    3.无缓存大小是0
*/

#include <head.h>

int main(int argc ,const char *argv[])
{
    //1.缓冲区的大小测试(缓冲区使用的时候才会分配)
    char ch;
    scanf("%c",&ch);
    printf("stdin buffer size = %ld\n",stdin->_IO_buf_end - stdin->_IO_buf_base);
    printf("stdout buffer size = %ld\n",stdout->_IO_buf_end - stdout->_IO_buf_base);

    //2.全缓存的大小(4k)测试(缓冲区使用的时候才会分配)
    FILE *fp;
    if((fp=fopen("./hello.txt","w+"))==NULL)
        FOPEN_ERR("fopen error");
    
    fputc('t',fp);
    printf("fp buffer size = %ld\n",fp->_IO_buf_end - fp->_IO_buf_base);
    fclose(fp);

    //3.标准出错缓冲区大小(无缓存大小为0(实际为1))
    fputc('w',stderr);
    printf("stderr buffer size = %ld\n",stderr->_IO_buf_end - stderr->_IO_buf_base);
    return 0;
}